﻿/*
subset 
Time Limit:1000MS  Memory Limit:32768K


Description:
给定两个集合A、B，集合内的任一元素x满足1 ≤ x ≤ 10^9，并且每个集合的元素个数不大于15000个。
我们希望求出A、B之间的关系。只需确定在B 中但是不在 A 中的元素的个数即可。

Input:
多组数据。第一行为N，M，表示第二行有N个数是集合A，第三行有M个数是集合B。 
Output:
输出在B 中但是不在 A 中的元素的个数。单独一行。 
Sample Input:
2 1
1 2
1
Sample Output:
0
*/

#include <iostream>
#include <cstdlib>
#include <set>
using namespace std;
int main()
{
	for (unsigned n, m; cin>>n>>m && n &&m;)
	{
		set<unsigned> a;
		while (n--)
		{
			unsigned num;
			cin>>num;
			a.insert(num);
		}

		unsigned b=0U;
		while (m--)
		{
			unsigned num;
			cin>>num;
			if (a.end()==a.find(num))
				++b;
		}
		cout<<b<<endl;
	}
	
	return EXIT_SUCCESS;
}
/*
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <set>
int main()
{
	int m, n;
	vector<int> a, b;
	cin>>n>>m;
	a.reserve(n);
	b.reserve(m);

	vector<int> c(m<n?n:m, 0);
	//c.reserve(m<n?m:n);

	while (n--)
	{
		int num;
		cin>>num;
		a.push_back(num);
	}
	while (m--)
	{
		int num;
		cin>>num;
		b.push_back(num);
	}



	sort(a.begin(), a.end());
	sort(b.begin(), b.end());

	vector<int>::iterator it=set_difference(b.begin(), b.end(), a.begin(), a.end(), c.begin());
	cout<<(it-c.begin());

	return 0;
}
*/
/*
int main()
{
	int m, n;
	vector<int> a;
	cin>>n>>m;
	a.reserve(n);
	
	while (n--)
	{
		int num;
		cin>>num;
		a.push_back(num);
	}

	unsigned count=0u;
	set<int> aset(a.begin(), a.end());
	while (m--)
	{
		int num;
		cin>>num;
		if (aset.end()==aset.find(num))
		{
			count++;
		}
	}
	cout<<count;
	
	return 0;
}
*/